package bishi.duoyi;

import java.util.ArrayList;
import java.util.List;

/**
 * @author: 唐小尊
 * @email: 1171702529@qq.com
 * @cate: 2021/08/20 16:16
 */
public class one {
    public static void main(String[] args) {
        List<List<Integer>> search = search(new ArrayList<Integer>() {{
            add(1);
            add(2);
            add(3);
        }});
        search.forEach(System.out::println);
    }

    static List<List<Integer>> res = new ArrayList<>();

    public static List<List<Integer>> search(List<Integer> list) {
//        for (int i = 0; i < list.size(); i++) {
//            int finalI = i;
//            huisuo(list,i,new ArrayList<Integer>(){{add(list.get(finalI));}});
//        }
        db(list);
        return res;
    }

    public static void huisuo(List<Integer> list, int i, List<Integer> now) {
        res.add(now);
        i++;
        for (; i < list.size(); i++) {
            now.add(list.get(i));
            huisuo(list, i, new ArrayList<>(now));
            now.remove(now.size() - 1);
        }
    }

    public static void db(List<Integer> list) {
        for (int i=0; i < list.size(); i++) {
            int finalI = i;
            int len = res.size();
            for (int j = 0; j < len; j++) {
                res.add(new ArrayList<Integer>(res.get(j)) {{
                    add(list.get(finalI));
                }});
            }
            res.add(new ArrayList<Integer>() {{
                add(list.get(finalI));
            }});
        }
    }
}
